package com.cheng.example.atguigu.design_pattern.flyweith;

/*
 * @author 程帅
 * @createTime: 2020/10/22 13:37
 * @Created: with IntelliJ IDEA.
 */
public class FlyWeight {

    public static void main(String[] args) {

        //如果 Integer.valueOf(x) 在-128 --- 127之间，就是使用享元模式返回，如果不在
        //范围内，则仍然new


        //小结:
        //1. 在valueOf 方法中，先判断是否在IntegerCache中，如果不在，就创建新的Integer(new),
        // 否则就直接从缓存池返回
        //2. valueOf方法，就是使用到享元模式
        Integer x = Integer.valueOf(127);
        Integer y = new Integer(127);
        Integer z = Integer.valueOf(127);//..
        Integer w = new Integer(127);

        System.out.println(x.equals(y));//大小, true

        System.out.println(x == y); //false
        System.out.println(x == z); //true
        System.out.println(w == x); //false
        System.out.println(w == y); //false

        //测试String

        String s1 = String.valueOf("张三");
        String s2 = String.valueOf("张三");
        String s3 = new String("张三");

        System.out.println(s1==s2);
        System.out.println(s2==s3);
    }
}
